package com.smartleanx.module.hrm.controller.admin.employee.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.smartleanx.framework.excel.core.annotations.DictFormat;
import com.smartleanx.module.system.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 员工分页 Response VO")
@Data
public class EmployeePageRespVO {

    @Schema(description = "id")
    private Long id;

    @Schema(description = "姓名")
    private String name;

    @Schema(description = "员工号")
    private String employeeNo;

    @Schema(description = "性别")
    @DictFormat(DictTypeConstants.USER_SEX)
    private Integer sex;

    @Schema(description = "部门名称")
    private String deptName;

    @Schema(description = "岗位名称")
    private String postName;

    @Schema(description = "入职时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime entryTime;

    @Schema(description = "转正时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime regularizationTime;

    @Schema(description = "计划转正时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime planRegularizationTime;

    @Schema(description = "司龄")
    private Long companyAge;

    @Schema(description = "工作地点")
    private String workAddress;

    @Schema(description = "员工状态")
    private Integer state;

    @Schema(description = "聘用形式")
    private Integer employmentForm;

    @Schema(description = "现合同结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate contractEndTime;

    @Schema(description = "生日类型 1 阳历 2 农历")
    private Integer birthdayType;

    @Schema(description = "生日")
    private String birthday;

    @Schema(description = "距今")
    private Integer toDate;

    @Schema(description = "入职周年")
    private Long years;

    @Schema(description = "是否即将转正")
    private Boolean isExpires;

    private Long userId;
}
